import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get/get_navigation/get_navigation.dart';

class ObxCountExample extends StatelessWidget {
  const ObxCountExample({super.key});

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'GetX Obx Count Example',
      home: ObxCountHome(),
    );
  }
}

// ignore: must_be_immutable
class ObxCountHome extends StatelessWidget {
  ObxCountHome({super.key});

  // 第一种 使用Rx{Type}
  // final xx_1 = RxString('0');
  // final xx_2 = RxInt(0);
  // final xx_3 = RxDouble(0.0);
  // final xx_4 = RxBool(false);
  // final xx_5 = RxList<int>([]); // RxList
  // final xx_6 = RxMap<String, String>({}); // RxMap
  // final xx_7 = RxSet<int>({}); // RxSet

  // 第二种 使用Rx,规定泛型 Rx<Type>
  // final name = Rx<String>('0');
  // final age = Rx<int>(0);
  // final price = Rx<double>(0.0);
  // final flag = Rx<bool>(false);
  // final list = Rx<List<int>>([]);
  // final map = Rx<Map<String, String>>({});
  // final set = Rx<Set<int>>({});

  // 第三种 使用 .obs
  // final name = ''.obs;
  // final age = 0.obs;

  // 第一种方式
  // RxInt age = RxInt(10);

  // var age = Rx<double>(10);

  var age = 10.obs;

  // 第一种方式
  void increment() {
    age++;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('obx get x')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 第一种方式
            Obx(
              () => Text(
                '已监听数值：$age',
                style: TextStyle(color: Colors.red, fontSize: 30),
              ),
            ),
            Text(
              '当前值为：$age',
              style: TextStyle(color: Colors.red, fontSize: 30),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                increment();
              },
              child: Text('+++'),
            ),
          ],
        ),
      ),
    );
  }
}
